from django.shortcuts import redirect, render
from django.http import HttpResponse

from myadmin.models import UserDietRecords, Users
# Create your views here.


def index(request):
    """ 个人中心首页 """
    # 1. 获取当前登录用户的标识（从Cookie中获取登录时存储的“mobileuser”，可能是手机号/账号）
    login_identifier = request.COOKIES.get('mobileuser', '')
    username = "健康饮食用户"  # 默认用户名
    user = None  # 初始化用户对象为None
    
    # 2. 根据登录标识查询数据库，获取真实用户信息
    if login_identifier:
        try:
            # 情况1：若登录标识是“手机号”（假设用户模型有phone字段）
            user = Users.objects.get(phone=login_identifier)
            username = user.username  # 从数据库获取用户名
            
        except Users.DoesNotExist:
            try:
                # 情况2：若登录标识是“账号”（查询username字段）
                user = Users.objects.get(username=login_identifier)
                username = user.username  # 从数据库获取用户名
                
            except Users.DoesNotExist:
                # 若查询不到（如Cookie无效），保留默认值
                pass
    
    # 3. 将用户名和用户对象传递到模板
    context = {
        'username': username,
        'user': user  # 传递完整用户对象供模板使用
    }
    
    # 4. 渲染页面并返回
    return render(request, 'mobile/member.html', context)

def logout(request):
    """ 用户退出 """
    # 清除登录状态Cookie并重定向到登录页
    response = redirect('mobile_login')  # 使用URL名称重定向更可靠
    response.delete_cookie('mobileuser')
    # 可以添加额外的安全措施，如设置过期时间为过去
    response.set_cookie('mobileuser', value='', expires=0)
    return response

def counts(request):
    # 获取当前用户
    user = request.user
    
    # 计算饮食记录总次数
    diet_records_count = UserDietRecords.objects.filter(user=user).count()
    
    # 计算目标达成次数（这里假设达成条件是热量摄入在目标范围内）
    # 实际项目中请根据具体业务逻辑修改
    achieved_goals_count = 0
    diet_records = UserDietRecords.objects.filter(user=user)
    
    for record in diet_records:
        # 假设每日目标热量是1800大卡，上下浮动200大卡为达成
        if 1600 <= record.calories <= 2000:
            achieved_goals_count += 1
    
    # 更新用户模型中的统计数据
    user.diet_records_count = diet_records_count
    user.achieved_goals_count = achieved_goals_count
    user.save()
    
    return render(request, 'mobile/member.html', {
        'user': user,
        'username': user.username,
    })